6장. 확장성과 가용성의 이해
1. 서버는 반드시 멈추지 않아야 할까
온프레미스 환경에서는 이런 생각이 자연스럽다.
- 서버는 절대 죽으면 안 된다.
- 가장 좋은 장비를 써야 한다.
- 장애는 최대한 막아야 한다.
하지만 현실에서는 어떤 시스템도
영원히 멈추지 않을 수는 없다.
- 하드웨어 고장
- 네트워크 장애
- 갑작스러운 트래픽 폭증
- 소프트웨어 오류
클라우드는 이 현실을 전제로 설계된다.
서버는 죽을 수 있다.
중요한 것은 “죽지 않게 만드는 것”이 아니라
“죽어도 서비스가 유지되게 만드는 것”이다.
2. 확장성이란 무엇인가
확장성(Scalability)은
부하가 증가해도 서비스를 유지할 수 있는 능력이다.
예를 들어:
- 사용자가 100명일 때는 서버 1대로 충분
- 사용자가 10,000명으로 늘어나면 서버가 더 필요
이때 어떻게 대응할 것인가가 확장성의 핵심이다.
3. 두 가지 확장 방식
수직 확장
- 기존 서버의 성능을 높인다.
- CPU, 메모리를 더 큰 사양으로 변경한다.
한계가 명확하다.
장비 교체가 필요하고, 물리적 제한이 존재한다.
수평 확장
- 서버 수를 늘린다.
- 여러 대가 동시에 요청을 처리한다.
이 방식은 이론상 확장 한계가 낮다.
클라우드는 이 수평 확장에 매우 유리하다.
대표적인 클라우드 서비스 제공자인
Amazon Web Services 는
자동 확장 기능을 제공한다.
부하가 증가하면 서버를 자동으로 늘리고,
부하가 줄어들면 자동으로 줄인다.
4. 가용성이란 무엇인가
가용성(Availability)은
서비스가 얼마나 지속적으로 이용 가능한지를 의미한다.
예를 들어:
- 99% 가용성
- 99.9% 가용성
- 99.99% 가용성
숫자가 높을수록 장애 허용 시간이 줄어든다.
하지만 가용성은 단순히
“서버가 켜져 있는가”의 문제가 아니다.
하나의 서버가 꺼져도
전체 서비스는 계속 동작하는가?
이 질문이 핵심이다.
5. 단일 장애 지점
단일 장애 지점(Single Point of Failure)은
한 지점의 장애가 전체 서비스 중단으로 이어지는 구조다.
예:
- 서버 1대만 운영
- 데이터베이스 1대만 운영
- 로드 밸런서 없음
이 구조에서는 작은 장애도
전체 중단으로 이어진다.
클라우드는 이러한 단일 장애 지점을 제거하기 쉽게 만든다.
6. 다중 영역 구성
클라우드 환경에서는
서버를 서로 다른 물리적 영역에 배치할 수 있다.
Amazon Web Services 는
이를 리전과 가용 영역이라는 구조로 제공한다.
- 가용 영역은 서로 물리적으로 분리된 데이터센터
- 전력과 네트워크가 독립적
- 동시에 장애가 발생할 확률이 낮음
여러 영역에 서버를 배치하면
하나의 데이터센터가 장애가 나도
서비스는 유지된다.
7. 클라우드의 설계 철학
온프레미스 사고:
- 강력한 한 대의 서버
- 장애를 막는 구조
클라우드 사고:
- 여러 대의 비교적 작은 서버
- 장애를 전제로 한 구조
- 자동 확장
- 자동 복구
이 차이가 가장 중요하다.
클라우드는 완벽한 서버를 제공하는 것이 아니라
유연하게 복구 가능한 환경을 제공한다.
8. 확장성과 가용성은 비용과 연결된다
- 서버를 여러 대 운영하면 비용 증가
- 다중 영역 구성하면 비용 증가
- 데이터 복제하면 비용 증가
따라서 다음 질문이 중요하다.
- 우리 서비스는 어느 수준의 가용성이 필요한가?
- 장애 허용 범위는 어디까지인가?
- 비용 대비 적절한 설계는 무엇인가?
클라우드에서는
아키텍처 설계가 곧 비용 설계다.
9. 이 장의 핵심 정리
- 서버는 언제든지 장애가 날 수 있다.
- 클라우드는 장애를 전제로 설계한다.
- 수평 확장은 클라우드의 핵심 강점이다.
- 단일 장애 지점을 제거하는 것이 중요하다.
- 가용성 수준은 설계와 비용의 균형이다.